Embodiments relate to the field of computer networks and communications over computer networks, including communications over wireless networks.
Many computer networks in existence today communicate through the transfer of data. Some examples include networks that can function independently (e.g., as Local Area Networks or LANs) or collectively as part of a group of interconnected networks (e.g., Wide Area Networks or WANs), such as the World Wide Web. Some of these networks include technologies that facilitate relatively fast, high data-rate transmissions (e.g., wired, fiber-optic, cable, and Digital Subscriber Line networks). Others facilitate slower data-rate transmissions (e.g., 3G cellular networks).
Mobile broadband services are becoming very popular in modern society. These services can provide a way for individuals having wireless communications devices (e.g., a cellular phone or tablet) to stay connected to the Internet while operating within and roaming between various wireless coverage areas. A concurrent trend is the huge increase in applications and media content distribution services that can facilitate the delivery of large, burdensome media content files to or from user equipment. Large media content file transfers have the signature feature of consuming significant amounts of network resources (e.g., channel bandwidth) over extended periods of time. Methods of enabling and making this particular data type delivery more efficient are important to end users and service providers alike. The processes facilitating more efficient media content delivery are particularly relevant for wireless networks that have limited bandwidth resources.
Most wireless networks operate using shared communications channels where concurrent, competing requests for channel access is commonplace. In these networks, data transfers can be slowed or degraded during periods of network channel congestion. Congestion can occur if the demand for a shared channel's bandwidth resources nears or exceeds the channel's capacity. Under these circumstances, the active users of the shared channel may come into conflict as each user attempts to complete individual data throughputs. To solve this problem, users can revise their requests so that the shared network channel can successfully deliver all requests in a timely manner For example, in a well-known strategy, users reduce their individual traffic using a fair-share policy. Many other prioritization schemes exist, but in existing methods the users of the congested shared network resource must first become aware that congestion is present before users can take corrective action to mitigate the congestion.
Congestion awareness by a user of a shared channel or link may be achieved in a variety of ways. In an example, end user terminals could individually operate packet data protocols with a congestion detection mechanism and develop congestion metrics. For instance, one transport-layer packet data protocol is the transport control protocol (TCP). TCP is also known by names of its many implementation variants such as TCP-Reno, TCP-Vegas and CUBIC. Other packet data protocols with congestion detection capability exist such as SCTP. In using TCP or other similar protocols, sending and receiving terminals interconnected by a network typically conduct periodic measurements of the network by transporting data over the network and measuring delivery performance of the data. Thus, the periodic measurements taken in accordance to these protocols also present a traffic load to a network. Accordingly, if many end user terminals attempt to detect congestion in this manner, the aggregate burden to the network traffic exacerbates any congestion that may already be present. Sending and receiving terminal pairs do not share congestion state information with other terminals of the shared channel or link or even with separate transport layer data sessions operating using the same sending and receiving terminals.
Furthermore, congestion detection and control is often assigned to lower protocol layers such as TCP, while upper application protocol layers and application programming interfaces typically do not have access to the congestion status of the network. Without access to congestion information upper application layers and application programming have difficulty reacting to or mitigating the congestion.